home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- ### BEGIN INIT INFO
- # Provides: umountroot
- # Required-Start:
- # Required-Stop:
- # Should-Stop: halt reboot kexec
- # Default-Start:
- # Default-Stop: 0 6
- # Short-Description: Mount the root filesystem read-only.
- ### END INIT INFO
-
- PATH=/sbin:/bin
- . /lib/init/vars.sh
-
- . /lib/lsb/init-functions
-
- do_stop () {
- [ "$VERBOSE" = no ] || log_action_begin_msg "Mounting root filesystem read-only"
- # These directories must exist on the root filesystem as they are
- # targets for system mountpoints. We've just unmounted all other
- # filesystems, so either they are mounted now (in which case the
- # mount point exists) or we can make the mountpoint.
- for dir in /proc /sys /var/run /var/lock; do
- mkdir -p $dir || true
- done
-
- # Ask init to reexec itself before we go down if it has been
- # upgraded this cycle. It'll lose all its state, but at least
- # it won't hold open files on the root filesystem
- [ -f /var/run/init.upgraded ] && telinit u || :
-
- MOUNT_FORCE_OPT=
- [ "$(uname -s)" = "GNU/kFreeBSD" ] && MOUNT_FORCE_OPT=-f
- # This:
- # mount -n -o remount,ro /
- # will act on a bind mount of / if there is one.
- # See #339023 and the comment in checkroot.sh
- mount $MOUNT_FORCE_OPT -n -o remount,ro -t dummytype dummydev / 2>/dev/null \
- || mount $MOUNT_FORCE_OPT -n -o remount,ro dummydev / 2>/dev/null \
- || mount $MOUNT_FORCE_OPT -n -o remount,ro /
- ES=$?
- [ "$VERBOSE" = no ] || log_action_end_msg $ES
- }
-
- case "$1" in
- start)
- # No-op
- ;;
- restart|reload|force-reload)
- echo "Error: argument '$1' not supported" >&2
- exit 3
- ;;
- stop)
- do_stop
- ;;
- *)
- echo "Usage: $0 start|stop" >&2
- exit 3
- ;;
- esac
-
- :
-